<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // 属性没有继承在自己身上  而是在原型上 

        // 既能继承属性  又能继承方法 
        // 遍历对象  for in 
        // for(var 变量 in 对象){}
        // 判断一个键是否在对象中  用in  
        //  字符串  in 对象  结果 布尔类型  

        // hasOwnProperty()
        // 对象.hasOwnProperty('属性名');
        // 返回值  也是布尔类型  
        // 只能是自己的身上的 原型身上的不算  

        // 利用for in 遍历父类的实例 
        // 所有的内容 赋值到子类的原型上  
        


        function Person(name,age){
            this.name = name;
            this.age = age;
        }

        Person.prototype.sayHello = function(){
            console.log('hello world');
        }


        // var p = new Person('张三',18);
        // console.log(p);
        // for(let k in p){
        //     console.log(k);
        // }

        function Student(gender,...args){
            this.gender = gender;
            // 创建一个父类的实例 用来遍历 
            const p = new Person(...args);
            for(let k in p){
                // console.log(k);
                // prototype 是一个对象结构 
                Student.prototype[k] = p[k]
            }
        }

        const s1 = new Student('男','张三',18);
        console.log(s1);
        console.log(s1.name);
        s1.sayHello()
        const s2 = new Student('女','秀儿',16);
        console.log(s2);
        console.log(s2.name);
        s2.sayHello()


    </script>
</body>
</html>